Package Management System, PMS

리눅스 소프트웨어 패키지 관리
리눅스에서 애플리케이션, 라이브러리 설치를 제어할 수 있는 몇가지 유형의 패키지 관리 시스템(PMS)를 이용한다.
(각각의 데이터 베이스를 사용해서 관리)

- 리눅스 시스템에 어떤 소프트웨어 패키지가 설치되어 있는가?
- 각 패키지마다 어떤 파일이 설치되어 있는가?
- 설치된 소프트웨어 패키지 각각의 버전은 무엇인가?

소프트웨어 패키지는 저장소(repository) 서버에 저장되고 인터넷으로 내 리눅스 시스템에서 구동되는 PMS 유틸리티를 통해 저장소에
접근할 수 있다.
PMS 유틸리티는 의존성을 감지하고 원한는 패키지를 설치하기 전에 추가로 필요한 소프트웨어 패키지를 설처한다.

PMS는 표준 유틸리티로 통합되어 있지 않다(리눅스 배포판에 따라 다른 유틸리티(인터페이스) 사용)

- dpkg: 데비안 기반 시스템인 우분투, 리눅스 민트 등에서 사용한다
- RPM: 레드햇 기반의 배포판인 페도라, 오픈수세, 맨드리바 등에서 사용한다.
Debian System(dpkg)
dpkg
    apt-get
    apt-cache
    aptitude: apt-get, apt-cache와 dpkg 명령 모두에 대한 프론트엔드 역할을 수행

aptitude를 사용하면 소프트웨어 의존성 누락, 불안정한 시스템 환경 및 불필요한 번거로움과 같이 소프트웨어 설치 문제에서 벗어나도록
도와준다.
- aptitude
aptitude는 대화형 인터페이스를 제공한다.
aptitude #
aptitude show <package_name> #
aptitude search <package_name> #
# search
# i, u:
# p, v:
# a, c: ,
# a, p:
sudo aptitutde install <package_name>
aptitude safe-upgrade #
aptitude full-upgrade
aptitude dist-upgrade #
sudo aptitude purge <package_name> #
aptitude로 특정 소프트웨어 패키지와 관련된 모든 파일들의 목록을 얻을 수는 없다.
목록 얻기 위해서는 dpkg 사용
dpkg -L <package_name> # package
dpkg --serach <absolute_file_name> # ( )
리눅스 배포판을 설치할 때 aptitude의 기본 소프트웨어 저장소 위치가 설정된다.
/etc/apt/sources.list 파일에 저장된다.
└─$ cat /etc/apt/sources.list
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
deb http://http.kali.org/kali kali-rolling main contrib non-free

# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
deb(-src) <address> <distribution_name> <package_type_list>
deb: 컴파일된 프로그램
deb_src: 소스코드

package_type_list
- main
- restricted
- universe
- partner
RedHat System(RPM)
RPM
    yum: 레드햇과 페도라, CentOS 등에서 사용
    urpm: 맨드리바에서 사용
    zypper: 오픈수세에서 사용
yum list installed > InstalledList.txt
rpm -q > InstalledList.txt
ipper search -I >InstalledList.txt
yum
yum list <package_name>
yum list installed <package_name>
#
yum provides <file_name>
# ex)
yum provides /etc/yum.conf # yum.conf
sudo yum install <package_name>
yum localinstall <package_name.rpm> # *.rpm
yum list updates #
yum update <package_name> #
yum update #
yum remove <package_name> # , config
yum erase <package_name> # config
#
yum clean all
yum deplist <package_name> #
yum update --skip-broken #
yum repolist # ()
/etc/yum.repos.d에 yum 저장소를 정의하는 파일이 저장된다.
소스코드에서 설치하기
소스코드를 압축하고 아카이브한 *.tar.gz or *.tgz로 패키지 소스가 제공되는 경우
tar -zxvf <*.tgz>
위와 같이 디렉토리를 압축해서 패키지로 제공되는 경우 README or AAAREADME 파일과 같은 필요한 지침을 주로 제공한다.
일반적으로
./configure #
make # ( )
make install # (PATH) ( !)
configure: 시스템에 필요한 라이브러리, 소스코드를 컴파일하기 위한 컴파일러 등 검사
make: 소스코드 컴파일, 링커로 최종 실행 파일 생성
make install: 사용자 계정으로 로그인 후 실행시, 사용자 공통 위치로 실행 파일 및 라이브러리 이동